Hola disculpa si es una pregunta tonta pero no encuentro la respuesta por ningún lado.
Tengo un archivo js en el que dibujo en lienzos y acabo de eliminar una función porque me gustaría usarla en otro archivo js que tengo. Luego importé la función getPosition en el archivo drawBalls.js de la siguiente manera:
import {getPosition} from "../Useful_Scripts/divPosition.js";Y eso parece funcionar bien (ya que no me da errores). Sin embargo, justo debajo de eso, tengo una función dibujar que comienza así:
function draw(canvas){ const maxRadius = 10; const minRadius = 5; etc;Lo cual ya no funciona dado que se declara el error 'dibujar' pero su valor nunca se lee.'. Sin embargo, funciona si elimino el código de importación y pego la función getPosition en drawBalls.js y elimino type="module" de la etiqueta del script.
Tengo esto en mi archivo html donde trato de dibujar en mi lienzo:
<script type="module" src="../Scripts/Project_1/drawBalls.js"></script> <script> window.addEventListener('load', (event) => { draw(canvas1); }); </script>¿Puede alguien explicar por qué ya no funciona tan pronto como el archivo se convierte en un módulo?
Actualizar He cambiado mi archivo html a
<script type="module" > import {draw} from "../Scripts/Project_1/drawBalls.js" window.addEventListener('load', (event) => { draw(canvas1); });¡Esto funciona!
El ámbito predeterminado de un módulo es ese módulo y no el ámbito global.
El método de draw solo existe dentro de ese módulo.
O:
addEventListener dentro drawBalls.jsexport la función draw y luego import en su otra secuencia de comandos en lugar de cargar drawBall.js con un elemento <script> . También puede asignar explícitamente draw para que sea una propiedad de window , pero eso es un truco sucio y no lo recomiendo.
Incluye su drawBalls.js como un módulo, pero no exporta la función de dibujo de su módulo – derpirscher
Está utilizando el script como un módulo. Suponga que está creando un paquete NPMjs y crea index.js. ¿Cómo necesitarías ese módulo y lo usarías?
Antes de requerir tu paquete, en index.js deberás exportarlo para importarlo/incluirlo.
Es una sintaxis muy básica con module.exports :
module.exports = draw; EDITAR: El código anterior es para módulos CommonJS. Use export en su lugar (al igual que import ):
export draw;